\chapter{Related Work}

The history of distributed filesystems is almost as long as the history of computer networks.
The original model and still the most commonly used systems in practice are client and server rigs such as NFS \cite{Pawlowski:2000p1543} and CIFS\cite{Leach:2008p2198}.
These systems are conceptually simple and, largely because of their ubiquity, easy to deploy and control.
The existence of a single central server however is a major limitation on how far such systems can be scaled.
Both NFS and CIFS focus exclusively on providing high speed connections between systems operating on a LAN. 

One attempt to extend a client-server based network to low bandwidth WANs is the Low-bandwidth Network File System\cite{Muthitacharoen:2001p1618}.
Here, a file is broken into chunks based on Rabin\cite{rabin:frp} fingerprints.
A Rabin fingerprint is the polynomial representation of the data modulo a predetermined irreducible polynomial. 

In the High Performance Computing world, where network interconnect is assumed to be fast and the limiting factor is largely disk bandwidth, the ability to handle petabytes of data extremely quickly has become the greatest challenge to any distributed filesystem. Currently, this is accomplished by striping files across multiple disks, while separating out storage and compute nodes.

One implementation of this is via an object based interface. 
As reported by Mesnier\cite{Mesnier:2003p2382}, "Objects are storage containers with a file-like interface, effectively representing a convergence of the NAS and SAN architectures. 
Objects capture the benefits of both NAS (high-level abstraction that enables cross platform data sharing as well as policy-based security) and SAN (direct access and scalability of a switched fabric of devices)."

Some implementations of Object based file systems include xFS\cite{Rodeh:2003p2369} and Ceph\cite{Weil:2006p1292}, discussed earlier.

%Other distributed hash systems include 
There has been widespread interest in peer-to-peer and wide-area networks in the past 10 years. 
To briefly mention a few, the Gnutella and Freenet networks \cite{Clarke:2000p2008, Berkes:2003p2010} are both popular examples.

Closer to Ringer, Kosha \cite{Butt:2006p2434}, extends the basic client-server model of NFS with peer-to-peer data transfer. 
Kosha uses NFS to provide hierarchical file organization, directory listings and file permissions, very much like the MDS concept in Ringer. 
Kosha peers transfer data directly between each other, again in a similar manner to Ringer.
A key difference is that Ringer supports a de-centralized MDS network, while Kosha relies on a single NFS server to handle the metadata requests of all its clients.
Also, while Ringer has an emphasis on wide-area search, Kosha is targeted at providing local area performance. 

Another system similar to Ringer is Anglano and Ferrino's work with N3FS.
In \cite{Anglano:2004p1917}, they evaluate using the Chord \cite{Stoica:2001p1759} distributed hash table like the MDS network in Ringer to provide metadata storage and lookup.
The difference again with Ringer is its emphasis on search.

